package com.smartappsnetwork.personalexpenses;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Vector;

import com.smartappsnetwork.personalexpenses.adapters.ExpandableListAdapter;
import com.smartappsnetwork.personalexpenses.dataaccess.ExpencesDA;
import com.smartappsnetwork.personalexpenses.database.DatabaseHelper;
import com.smartappsnetwork.personalexpenses.dataobject.ExpenceDO;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.ExpandableListView.OnGroupClickListener;
import android.widget.Toast;

/**
 * A fragment that launches other parts of the demo application.
 */
public class SammaryFragment extends Fragment 
{
	ExpandableListAdapter listAdapter;
	ExpandableListView expListView;
	List<String> listDataHeader;
	List<String> listMonthTotal;
	HashMap<String, List<String>> listDataChild;
	View rootView;
	
	String[] months = {"January","February","March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};

	Vector<ExpenceDO> vecExpenceDO;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    {
        rootView = inflater.inflate(R.layout.expences_summary_activity, container, false);
        initializeControls();
        
        
    	// get the listview
		expListView = (ExpandableListView) rootView.findViewById(R.id.lvExp);

		// preparing list data
		prepareListData();

		listAdapter = new ExpandableListAdapter(getActivity(), listDataHeader, listDataChild);

		// setting list adapter
		expListView.setAdapter(listAdapter);

		// Listview Group click listener
		expListView.setOnGroupClickListener(new OnGroupClickListener() 
		{
			@Override
			public boolean onGroupClick(ExpandableListView parent, View v,int groupPosition, long id) 
			{
				 Toast.makeText(getActivity(),
				 "Group Clicked " + listDataHeader.get(groupPosition),
				 Toast.LENGTH_SHORT).show();
				
				return false;
			}
		});

//		// Listview Group expanded listener
//		expListView.setOnGroupExpandListener(new OnGroupExpandListener() 
//		{
//			@Override
//			public void onGroupExpand(int groupPosition) 
//			{
//				Toast.makeText(getActivity(),listDataHeader.get(groupPosition) + " Expanded",
//						Toast.LENGTH_SHORT).show();
//			}
//		});
//
//		// Listview Group collasped listener
//		expListView.setOnGroupCollapseListener(new OnGroupCollapseListener() 
//		{
//
//			@Override
//			public void onGroupCollapse(int groupPosition) 
//			{
//				Toast.makeText(getActivity(),listDataHeader.get(groupPosition) + " Collapsed",Toast.LENGTH_SHORT).show();
//			}
//		});

		// Listview on child click listener
		expListView.setOnChildClickListener(new OnChildClickListener() 
		{
			@Override
			public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) 
			{
				// TODO Auto-generated method stub
				Toast.makeText(getActivity(),listDataHeader.get(groupPosition)+ " : "+ listDataChild.get(listDataHeader.get(groupPosition)).get(childPosition), Toast.LENGTH_SHORT).show();
				return false;
			}
		});
        
     
        return rootView;
    }
    
    
    public void initializeControls()
    {
    	new DatabaseHelper(getActivity());
    	
    	vecExpenceDO = new ExpencesDA().getAllExpences();
    	
    	listDataHeader = new ArrayList<String>();
    	listMonthTotal = new ArrayList<String>();
    	
    	for(ExpenceDO expenceDO : vecExpenceDO)
    	{
    		String[] d = expenceDO.date.split("-");
    		String month = months[Integer.parseInt(d[1])-1];
    		int m = Integer.parseInt(d[1])-1;
    		
    		if(!listDataHeader.contains(month))
    		{
    			listDataHeader.add(month);
    			
    		}
    		
    	}
    	
    }
    
    /*
	 * Preparing the list data
	 */
	private void prepareListData() {
//		listDataHeader = new ArrayList<String>();
		listDataChild = new HashMap<String, List<String>>();

		// Adding child data
//		listDataHeader.add("Top 250");
//		listDataHeader.add("Now Showing");
//		listDataHeader.add("Coming Soon..");

		
		// Adding child data
		List<String> top250 = new ArrayList<String>();
		top250.add("The Shawshank Redemption");
		top250.add("The Godfather");
		top250.add("The Godfather: Part II");
		top250.add("Pulp Fiction");
		top250.add("The Good, the Bad and the Ugly");
		top250.add("The Dark Knight");
		top250.add("12 Angry Men");

		List<String> nowShowing = new ArrayList<String>();
		nowShowing.add("The Conjuring");
		nowShowing.add("Despicable Me 2");
		nowShowing.add("Turbo");
		nowShowing.add("Grown Ups 2");
		nowShowing.add("Red 2");
		nowShowing.add("The Wolverine");

		List<String> comingSoon = new ArrayList<String>();
		comingSoon.add("2 Guns");
		comingSoon.add("The Smurfs 2");
		comingSoon.add("The Spectacular Now");
		comingSoon.add("The Canyons");
		comingSoon.add("Europa Report");

		listDataChild.put(listDataHeader.get(0), top250); // Header, Child data
		listDataChild.put(listDataHeader.get(1), nowShowing);
//		listDataChild.put(listDataHeader.get(2), comingSoon);
	}
}
